import { useUserStore } from '@/stores'
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import { routes } from './routes'

// 创建路由实例
const router = createRouter({
  // vue2 => mode: 'hash' | 'history'
  // vue3 => history
  // import.meta.env.BASE_URL 环境变量，vite.config.ts中的base字段
  // 场景：项目没有部署到服务器root目录，而是部署到root下某个文件夹下
  // 这时候需要在vite.config.ts中配置=>base:'/root/project/'
  // 1. history模式
  history: createWebHistory(import.meta.env.BASE_URL),
  // 2. hash模式
  // history: createWebHashHistory(import.meta.env.BASE_URL),
  // 路由配置
  routes
})

// 添加全局路由前置守卫
/**
 * vue2: to 去哪了 from 从哪来 next函数（放行）
 * vue3: to 去哪了 from 从哪来
 */
router.beforeEach((to, from) => {
  // console.log('访问页面之前先执行我：', to, from)
  // 设置当前访问页面的title
  document.title = `问诊-${to.meta.title}`
  // return false 阻止页面访问
  // return true 放行
  // 需求：没有登录不能访问指定页面，除了登录、注册等
  // 1. 获取token
  const store = useUserStore()
  // 白名单（vip客户）
  const vips = ['/login', '/reg']
  // 2. 判断拦截
  if (!store.user.token && !vips.includes(to.path)) {
    // 说明：没有token也不是vip=》重新登录
    // 阻止访问并跳回登录页
    return '/login'
  }
})

export default router
